﻿using System;
using System.Collections.Generic;
using System.Text;

using AIFSCMSDataAccessLayer.Dao;
using AIFSContentManagementSystem.DomainObjects;

namespace AIFSContentManagementSystem.CriteriaManagement
{
    using Messages;

    public interface ICriteriaManager : IManager
    {
        /// <summary>
        /// Get criteria request
        /// </summary>
        GetCriteriaResponse GetCriteria(GetCriteriaRequest request);

        /// <summary>
        /// Provide criterion expression factory to be used
        /// </summary>
        ICriterionExpressionFactory CriterionExpressionFactory { get; set; }

        /// <summary>
        /// Provide criteria asserter to be used
        /// </summary>
        ICriteriaAsserter CriteriaAsserter { get; set;}

        /// <summary>
        /// Data access repository
        /// </summary>
        ICriteriaDao CriteriaDao { get; set; }        
    }
}
